Machine virtualization refers to implementing a machine using software. The machine may be, for example, a general purpose computer. A software-implemented machine is generally known as a virtual machine (VM). The software layer providing the virtualization is known as a hypervisor. The hypervisor may run on “bare-metal” hardware (i. e., does not require a host operating system) or on top of an operating system. Generally, multiple virtual machines may run simultaneously on one physical machine. Through machine virtualization, the physical characteristics of the physical machine may be hidden from software programs running on a virtual machine. Instead, the software programs executing on a virtual machine may be provided with an abstract computing platform that includes virtual hardware components. As far as the executing software programs are concerned, virtual hardware components may be no different from physical hardware components. This creates challenges for a license enforcement module that depends on identifying each computer by the characteristics of its hardware components.
To manage the use of its client software by users in a customer's enterprise, an independent software vendor (ISV) may often deploy licenses in which the licensed software is bound to a specific machine hosted by the customer. The license enforcement module is bound to a specific machine through a machine's bindings, which are the machine characteristics that the enforcement module uses to verify if the software is authorized to operate on that machine. The license enforcement module ensures that the correct number of users run the client software simultaneously according to the terms of the license. For example, if the customer purchased 50 floating licenses from the ISV, the license enforcement module will only allow up to 50 instances of the client software to run at any given time. However, if multiple license enforcement modules were allowed to run on the customer's hosting machine, such as running the license enforcement modules simultaneously on separate virtual machines, the customer may be able to overuse his licensing rights by running more instances of the client software than the number of licenses that were purchased (e.g., 3 license enforcement modules, each allowing up to 50 instances, would allow a total of 150 instances).
In view of the foregoing, there exists a need for a method and system for implementing software licensing management under machine virtualization that prevents or reduces license overuse by customers running multiple license enforcement modules.